为您找到与linux svn服务器搭建和使用相关的共200个结果:
最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux中svn命令使用大全:小编为大家分享了linux中svn命令使用大全,下面大家跟着读文网小编一起来了解一下吧。
检测是否安装svn:svnserve --version
svn服务的关闭:killall svnserve
创建svn库:svnadmin create /opt/svn/repos
配置自动启动:把svnserve -d -r /opt/svn/repos 放在/etc/rc.d/rc.local最后一行
启动svn: svnserve -d -r /opt/svn/repos
如果已经有svn在运行,可以换一个端口运行:svnserve -d -r /opt/svn/repos --listen-port 3391
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件 svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" test.php
简写:svn ci
4、加锁/解锁 svn lock -m "LockMessage" [--force] PATH
例如:svn lock -m "lock test file" test.php
svn unlock PATH
5、更新到某个版本 svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件 svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志 svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息 svn info path
例如:svn info test.php
10、比较差异 svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件 svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助 svn help
svn help ci
13、版本库下的文件和目录列表 svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH...
2、mkdir URL...
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH...
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
看过“ linuxsvn命令怎么使用 ”
浏览量:2
下载量:0
时间:
开发网站的时候,常常需要自己配置Linux服务器。如何搭建一个安全的Linux服务器?下面跟着读文网小编一起来了解一下吧。
在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf(其中网络部分的配置可以通过netconf命令来实现)。下面介绍基本的TCP/IP网络配置文件。
*/etc/conf.modules文件
该配置文件定义了各种需要在激活时加载的模块的参数信息。这里主要着重讨论关于网卡的配置。在使用Linux做网关的情况下,Linux服务器至少需要配置两块网卡。为了减少激活时可能出现的问题,Linux内核不会自动检测多个网卡。对于没有将网卡的驱动编译到内核而是作为模块动态加载的系统若需要安装多块网卡,应该在“conf.modules”文件中进行相应的配置。
若设备驱动被编译为模块(内核的模块):对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则需要向模块提供IO地址,以使模块知道在何处寻找该卡,这些信息在“/etc/conf.modules”中提供。
对于PCI卡,仅仅需要alias命令来使ethN和适当的驱动模块名关联,PCI卡的IO地址将会被自动的检测到。对于PCI卡,编辑“conf.modules”文件如下:aliaseth03c905aliaseth13c905若驱动已经被编译进了内核:系统激活时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况下,ISA卡仍然需要做下面的配置工作:
在“/etc/lilo.conf”中增加配置信息,其方法是通过LILO程序将激活参数信息传递给内核。对于ISA卡,编辑“lilo.conf”文件,增加如下内容:append="ether="0,0,eth0ether="0,0,eth1"注:先不要在“lilo.conf”中加入激活参数,测试一下你的ISA卡,若失败再使用激活参数。
如果用传递激活参数的方法,eth0和eth1将按照激活时被发现的顺序来设置。
*/etc/HOSTNAME文件:
该文件包含了系统的主机名称,包括完全的域名,如:deep.openarch.com
*/etc/sysconfig/network-scripts/ifcfg-ethN文件:
在RedHat中,系统网络设备的配置文件保存在“/etc/sysconfig/network-scripts”目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。
*/etc/resolv.conf文件:
该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:
searchopenarch.comnameserver208.164.186.1nameserver208.164.186.2
“searchdomainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
*/etc/host.conf文件:
该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个“/etc/host.conf”的示例:
orderbind,hosts
multion
ospoofon
“orderbind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。
“multion”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。
“nospoofon”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算器,来取得其它计算器的信任。
*/etc/sysconfig/network文件
该文件用来指定服务器上的网络配置信息。
*/etc/hosts文件
当机器激活时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
*/etc/inetd.conf文件
众所周知,作为服务器来说,服务端口开放越多,系统安全稳定性越难以保证。所以提供特定服务的服务器应该尽可能开放提供服务必不可少的端口,而将与服务器服务无关的服务关闭,比如:一台作为www和Ftp服务器的机器,应该只开放80和25端口,而将其它无关的服务如:fingerauth等服务关掉,以减少系统漏洞。
而inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口激活哪个服务。在任何的网络环境中使用Linux系统,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。
第一步:把文件的权限限改成600。
[root@deep]#chmod600/etc/inetd.conf
第二步:确信文件的所有者是root。
[root@deep]#stat/etc/inetd.conf
第三步:编辑“inetd.conf”文件(vi/etc/inetd.conf),禁止所有不需要的服务,如:ftp、telnet、shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth,等等。如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:
#Tore-readthisfileafterchanges,justdoa'killall-HUPinetd'##echostreamtcpnowaitrootinternal#echodgramudpwaitrootinternal#discardstreamtcpnowaitrootinternal#discarddgramudpwaitrootinternal#daytimestreamtcpnowaitrootinternal#daytimedgramudpwaitrootinternal#chargenstreamtcpnowaitrootinternal#chargendgramudpwaitrootinternal#timestreamtcpnowaitrootinternal#timedgramudpwaitrootinternal##Thesearestandardservices.##ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l-a#telnetstreamtcpnowaitroot/usr/sbin/tcpdin.telnetd##Shell,login,exec,comsatandtalkareBSDprotocols.
看过“ 如何搭建一个安全的Linux服务器 ”
浏览量:2
下载量:0
时间:
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,[1] 也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。那么Linux怎么搭建Web服务器?下面跟着读文网小编一起来了解一下吧。
1,基于apache的web服务器基础搭建:
(1)实验环境:一台ip为192.168.10.10的rhel5.9主机作为web服务器,一台ip为192.168.10.15的win7主机作为测试机
(2)查看服务主机软件是否安装
[root@ser1 ~]# rpm -q httpd httpd-manual httpd-devel
package httpd is not installed
package httpd-manual is not installed
package httpd-devel is not installed
(3)安装软件包
[root@ser1 ~]# yum install -y httpd httpd-manual httpd-devel
(4)启动服务
[root@ser1 ~]# service httpd start
启动httpd: [确定]
[root@ser1 ~]# chkconfig httpd on
(5)在win7上测试,无网页缺省下显示红帽测试页
<报错页面存放位置/var/www/error/noindex.html>
(6)打开配置文件
[root@ser1 ~]# vim /etc/httpd/conf/httpd.conf
可获得以下重要字段:
目录设置:
<Directory 目录> .. .. </Directory>
访问位置设置:
<LocationURL> .. .. </Location>
虚拟主机设置:
<VirtualHost 监听地址> .. .. </VirtualHost>
常用的全局设置参数:
ServerName本站点的FQDN名称
DocumentRoot网页文档的根目录:缺省/var/www/html/
DirectoryIndex默认索引页/首页文件:一般设为index.html index.php
ErrorLog错误日志文件的位置
CustomLog 访问日志文件的位置
Listen 监听服务的IP地址、端口号
ServerRoot 服务目录:/etc/httpd/
Timeout网络连接超时,默认 300 秒
KeepAlive是否保持连接,可选On或Off
MaxKeepAliveRequests每次连接最多处理的请求数
KeepAliveTimeout保持连接的超时时限
Include 可包含其他子配置文件: /etc/httpd/conf.d/
(7)创建测试网页
[root@ser1 ~]# vim /var/www/html/index.html
<h1>
This is a test page !!!
</h1>
~
(8)win7下测试,主页变为测试网页
2,基于apache的web服务器的访问控制:
(1)web服务的地址限制
I,rder 配置项,定义控制顺序
allow,deny 先允许后拒绝,缺省拒绝所有;冲突时,拒绝生效;allow不设置,拒绝所有
deny,allow 先拒绝后允许,缺省允许所有;冲突时,允许生效;deny不设置,允许所有
II,Allow/Deny from 配置项,设置权限
Allow from 地址1 地址2 .. ..
Deny from 地址1 地址2 .. ..
配置如下:
[root@ser1 ~]# vim /etc/httpd/conf/httpd.conf
331 #
332 Orderallow,deny
333 Allowfrom 192.168.20.0/24
334
335 </Directory>
[root@ser1 ~]# service httpd restart……重启服务
停止httpd: [确定]
启动httpd: [确定]
在win7上测试,测试完成并还原配置文件:
看过“ Linux怎么搭建Web服务器 ”
浏览量:2
下载量:0
时间:
在网络服务中,web服务在人们生活中是必不可少的;人们每天在网站上浏览网页,获取最新的讯息,那么Linux怎么搭建常用服务器?下面跟着读文网小编一起来了解一下吧。
1、查看是否有HTTP服务
rpm –qa|grep httpd
2、挂载
mkdir /mnt/cdrom
mount –t iso9660 /dev/cdrom /mnt/cdrom
3、找到server文件夹
cd /mnt/cdrom/Server
4、安装httpd服务
ls httpd*
rpm –ivh apr-1.2.7-11.el5.i386.rpm
rpm –ivh postgresql-libs-8.1.11-1.el5_1.1.i386.rpm
rpm –ivh apr-util-1.2.7-7.el5.i386.rpm
rpm –ivh httpd-2.2.3-22.el5.i386.rpm
5、检查安装
rpm -qa|grep httpd
6、配置文件
vi /etc/httpd/conf/httpd.conf
①57行:ServerRoot http运行目录
②68行:TimeOut 超时
③134行:Listen 监听端口(80)
④251行:ServerAdmin 邮箱地址
⑤265行:ServerName 写域名或IP地址
⑥281行:DocumentRoot 访问网页目录
⑦391行:DirectoryIndex 默认访问的页面(首页)
⑧747行:AddDefaultCharset 默认字体编码
⑨目录设置:
<Directoryf>
Order allow.deny
Allow from 192.168.1.0/24
Deny from 192.168.1.200
</Directory>
⑩虚拟目录:958行
<VirturalHost*: 80> 注释:*指当前本地ip地址(可不写)
ServerName www.fendoujiaoyu.com
DocumentRoot /var/www/html
</VirturalHost>
<VirturalHost*: 80>
ServerName bbs.fendoujiaoyu.com
DocumentRoot /var/www/html/pbbs
</VirturalHost>
7、开启服务
chkconfig httpd on 或 service httpd start
安装apache Tomcat
1、先把安装文件放到Linux下,然后找到它的目录;
cd apache+tomcat+jdk_for_linux/
2、解压缩
tar -xf apache-tomcat-5.5.27.tar.gz
3、执行
./jdk-6u1-linux-i586.bin
4、配置环境变量
cd /etc
vi profile
(1)添加以下内容:
JAVA_HOME=/home/loocao/software/java/jdk1.6.0_01 //写上正确的路径
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$ JAVA_HOME/lib:$ JRE_HOME/lib:$ CLASSPATH
PATH=$ JAVA_HOME/lib:$ JRE_HOME/lib:$ PATH
(2)在45行后添加JAVA_HOME JRE_HOME CLASSPATH
(3):wq!保存退出。
(4)reboot 重启
(5)java -version 若显示java version "1.6.0_01"表示配置成功
(6)cd apache-tomcat-5.5.27/bin
(7)在bin下执行 ./startup.sh
./shutdown.sh 关闭
七、搭建samba服务器
1、查看是否有samba服务
rpm –qa|grep samba
默认安装:
samba-common-3.0.33-3.7.el5
samba-c l i e n t-3.0.33-3.7.el5
2、挂载
mkdir /mnt/cdrom
mount –t iso9660 /dev/cdrom /mnt/cdrom
3、找到server文件夹
cd /mnt/cdrom/Server
4、安装samba服务
ls samba*
rpm –ivh samba-3.0.33-3.7.el5.i386.rpm
rpm –ivh perl-Convert-ASN1-0.20-1.1.noarch.rpm
5、检查安装
rpm -qa|grep samba
6、配置文件
vi /etc/samba/smb.conf
(1)修改
74行:workgroup = 组名
75行:解释说明
77行:另一个名字
80行:允许访问的ip及子网
分号为注释
(2)
101行:设置安全的(share为所有人可访问,user为指定用户访问)
(3)
124行: 域名可访问
(4)
249行:设置主目录comment = Home Directories
250行:是否可见
251行:是否可写
252行:固定的用户
253行:固定用户的域名
(5)
283行:设置主目录
284行:设置主目录路径
285行:是否设为公共
286行:是否可写
287行:是否可打印
288行:可写的列表:如 用户名+组名 ,表示用户和组成员都可写。
(6)建立主目录,并将其与所有的用户都改为在设定的组内,改权限为777;
(7)用命令testparm测试是否配置正确。
7、开启服务
service smb start
8、在Linux图形界面下,
⑴ 选择places → Connect to Server…
⑵在出现的窗口中,service type:选择windows share;
⑶在server后输入ip地址,connect。
9、双击出现的smb 图标。
浏览量:2
下载量:0
时间:
DNS是域名服务器(DomainNameServer)的缩写,在TCP/IP网络中是一种很重要的网络服务,它用于将易于记忆的域名和不易记忆的IP地址进行转化。那么Linux怎么搭建DNS服务器?下面跟着读文网小编一起来了解一下吧。
DNS系统的作用:
正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的)
反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时。)
根据服务器与所提供域名解析记录的关系,将DNS服务器分为不同的角色:
缓存域名服务器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
从域名服务器(通俗一点就是用于备份DNS服务器的)
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
搭建DNS服务应用的软件为:BIND(Berkeley Internet Name Daemon)
官方站点:https://www.isc.org/
相关软件包:
bind-9.3.3-7.el5.i386.rpm
bind-utils-9.3.3-7.el5.i386.rpm
bind-chroot-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
cache-nameserver软件包实际上只是提供了一些配置样例文件,对于熟悉BIND配置文件的系统管理员来说,也可以不用安装该软件包
bind,提供了域名服务的主要程序及相关文件
bind-utils,提供了对DNS服务器的测试工具程序(如nslookup、dig等)
bind-chroot,为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)
caching-nameserver,为配置BIND作为缓存域名服务器提供必要的默认配置文件,这些文件在配置主、从域名服务器时也可以作为参考
named作为标准的系统服务脚本,通过”service named start/stop/restart“的形式可以实现对服务器程序的控制
named默认监听TCP、UDP协议的53端口,以及TCP的953端口:
其中UDP 53端口一般对所有客户机开放,以提供解析服务;
TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道
如果没有安装bind-chroot软件包,则主配置文件默认位于 /etc/named.conf,数据文件默认保存在/var/named/ 目录
下面主要来介绍实际应用中最多的“主DNS服务器”的搭建
看一下拓扑图:
实现步骤:
1. 安装所有安装包
2.进入/var/named/chroot/etc/修改主配置文件named.caching-nameserver.conf,只把四个地方改为any就可以了。
注:radhat5.0的版本是4个any,而5.4是五个any;
3. 修改主配置文件的扩展文件named.rfc1912.zones
4.进入以下目录建立lele.com的域配置文件
5. 删除lele.com的最后一行
6.添加如下记录;
反向和正向一样,修改主配置文件的扩展文件named.rfc1912.zones,添加1.168.192.in-addr.arpa(in-addr.arp标记为反向域)为主域(master)
删除最后一行。
7.执行以下命令,然后重启服务。
注:rhel5文件必须是named组的,而且权限要求很高,不好改,简便将组和权限设置要只需要打bind-chroot-admin -s就自动设置好了
8.在客户机上测试。
如果出现如下情况,就证明DNS服务器搭建成功了。
详细文字叙述:
ls /media/Server/*bind* //查询所有安装包
rpm -ivh /media/Server/bind-* --nodeps --force //安装所有安装包
正向域名解析
1.修改主配置文件
cd /var/named/chroot/etc/named.caching-nameserver.conf
改4个地方成any
2.修改主配置文件的扩展文件named.rfc1912.zones
2.1 添加lele.com为主域(master)
zone "amao.com" { #开启域名叫lele.com
type master; #类型为主域
file "amao.com"; #域配置文件为lele.com
};
3.建立lele.com的域配置文件
cd /var/named/chroot/var/named
cp named.local amao.com
删除amao.com的最后一行
添加
www IN A 192.168.0.2
保存退出
执行bind-chroot-admin -s命令
4.重启服务,完成配置
#rhel5文件必须是named组的,而且权限要求很高,不好改,
*#简便将组和权限设置要只需要大bind-chroot-admin -s就自动设置好了
@当前域
root.localhost=root@localhost邮箱
SOA 权威域名记录
NS 域名主机
A 正向解析记录
MX 邮件转发记录
CNAME 别名
PTR 反向解析
#正向和反向不能在一个文件中出现
5.修改主配置文件的扩展文件named.rfc1912.zones
5.1 添加1.168.192.in-addr.arpa(in-addr.arp标记为反向域)为主域(master)
zone "1.168.192.in-addr.arpa" {
type master;
file "192.168.1.fx";
};
6.建立192.168.1.fx的域配置文件
cd /var/named/chroot/var/named
cp named.local 192.168.0.fx
删除lele.com的最后一行
添加
105 IN PTR www.lele.com.
保存退出
执行bind-chroot-admin -s命令
7.重启服务,完成配置
#192.168.1.105反向域写为1.168.192.in-add.arpa
看过“ Linux怎么搭建DNS服务 ”
浏览量:3
下载量:0
时间:
中ftp服务器的全名叫 vsftpd,我们需要利用相关命令来开启安装ftp服务器,然后再在vsftpd.conf中进行相关配置,下面读文网小编来介绍vsftpd安装的方法。
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
2、LINUX下FTP服务器的搭建
一般在各种linux的发行版中,默认带有的ftp软件是vsftp,从各个linux发行版对vsftp的认可可以看出,vsftp应该是一款不错的ftp软件。
(1)检查vsftpd软件是否安装
使用如下命令可以检测出是否安装了vsftpd软件,rpm -qa |grep vsftpd ,例如在我的centos 5.6中显示的结果如下:
如果没有安装的话,可以下载安装,也可以使用软件源进行安装。这里不再赘述。
(2)vsftpd软件的使用
使用vsftpd软件,主要包括如下几个命令:
启动ftp:service vsftpd start
停止ftp:service vsftpd stop
重启ftp:service vsftpd restart
或者使用带有路径的命令:
(3)vsftpd的配置
ftp的配置文件主要有三个,在centos5.6中位于/etc/vsftpd/目录下,分别是:
ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
vsftpd.conf vsftpd的主配置文件
(4)下面我们使用vi编辑vsftpd.conf文件
用户登录控制:
anonymous_enable=YES,允许匿名用户登录。
no_anon_password=YES,匿名用户登录时不需要输入密码。
local_enable=YES,允许本地用户登录。
deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
banned_email_file=/etc/vsftpd/banned_emails,保存电子邮件黑名单的目录(默认)
用户权限控制:
write_enable=YES,开启全局上传
local_umask=022,本地文件上传的umask设置为022,系统默认。
anon_upload_enable=YES,允许匿名用户上传,当然要在write_enable=YES的情况下。同时必须建立一个允许ftp用户读写的目录。
anon_mkdir_write_enable=YES,允许匿名用花创建目录
chown_uploads=YES,匿名用户上传的文件属主转换为别的用户,一般建议为root。
chown_username=whoever,改此处的whoever为要转换的属主,建议root
chroot_list_enable=YES,用一个列表来限定哪些用户只能在自己目录下活动。
chroot_list_enable=/etc/vsftpd/chroot_list,指定用户列表文件
nopriv_user=ftpsecure,指定一个安全账户,让ftp完全隔离和没有特权的账户
其他的建议不要配置。
用户连接和超时设置:
idle_session_timeout=600,默认的超时时间
data_connection_timeout=120,设置默认数据连接的超时时间
(4)服务器日志和欢迎信息
dirmessage_enable=YES,允许为配置目录显示信息
ftpd_banner=Welcome to blah FTP service. ftp的欢迎信息
xferlog_enable=YES 打开日志记录功能
xferlog_file=/var/log/xferlog 日志记录文件的位置
我们可以更改以上的各个设置,然后重启ftp服务就可以实现对ftp的配置了。
本文出自 “云计算,IT不再重要。” 博客
paddingU
? h:??(?(ding-bottom: 15px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">1、FTP服务器的简介
关于ftp的介绍,大家也一定不陌生了。我就直接把百度百科上的介绍拿过来,和大家一起温习一下概念。
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
2、LINUX下FTP服务器的搭建
一般在各种linux的发行版中,默认带有的ftp软件是vsftp,从各个linux发行版对vsftp的认可可以看出,vsftp应该是一款不错的ftp软件。
(1)检查vsftpd软件是否安装
使用如下命令可以检测出是否安装了vsftpd软件,rpm -qa |grep vsftpd ,例如在我的centos 5.6中显示的结果如下:
如果没有安装的话,可以下载安装,也可以使用软件源进行安装。这里不再赘述。
(2)vsftpd软件的使用
使用vsftpd软件,主要包括如下几个命令:
启动ftp:service vsftpd start
停止ftp:service vsftpd stop
重启ftp:service vsftpd restart
或者使用带有路径的命令:
(3)vsftpd的配置
ftp的配置文件主要有三个,在centos5.6中位于/etc/vsftpd/目录下,分别是:
ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
vsftpd.conf vsftpd的主配置文件
(4)下面我们使用vi编辑vsftpd.conf文件
用户登录控制:
anonymous_enable=YES,允许匿名用户登录。
no_anon_password=YES,匿名用户登录时不需要输入密码。
local_enable=YES,允许本地用户登录。
deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
banned_email_file=/etc/vsftpd/banned_emails,保存电子邮件黑名单的目录(默认)
用户权限控制:
write_enable=YES,开启全局上传
local_umask=022,本地文件上传的umask设置为022,系统默认。
anon_upload_enable=YES,允许匿名用户上传,当然要在write_enable=YES的情况下。同时必须建立一个允许ftp用户读写的目录。
anon_mkdir_write_enable=YES,允许匿名用花创建目录
chown_uploads=YES,匿名用户上传的文件属主转换为别的用户,一般建议为root。
chown_username=whoever,改此处的whoever为要转换的属主,建议root
chroot_list_enable=YES,用一个列表来限定哪些用户只能在自己目录下活动。
chroot_list_enable=/etc/vsftpd/chroot_list,指定用户列表文件
nopriv_user=ftpsecure,指定一个安全账户,让ftp完全隔离和没有特权的账户
其他的建议不要配置。
用户连接和超时设置:
idle_session_timeout=600,默认的超时时间
data_connection_timeout=120,设置默认数据连接的超时时间
(4)服务器日志和欢迎信息
dirmessage_enable=YES,允许为配置目录显示信息
ftpd_banner=Welcome to blah FTP service. ftp的欢迎信息
xferlog_enable=YES 打开日志记录功能
xferlog_file=/var/log/xferlog 日志记录文件的位置
这里,就已经安装完成。我们可以在浏览器访问http://www.你的域名/phpmyadmin,结果如下图所示
我们可以更改以上的各个设置,然后重启ftp服务就可以实现对ftp的配置了。
看过“ LINUX怎么搭建FTP服务器 ”
浏览量:3
下载量:0
时间:
如果你想要了解Linux服务器的目前状况,那么你就需要知道Linux服务器监控命令,使用Linux服务器监控命令,可以知道当前服务器正在做什么,那么Linux服务器监控命令有哪些呢?随读文网小编一起来了解下吧。
你应该只在需要的时候去启动 GUI ,不用的时候关掉它。如果要让服务器保持最佳性能,你应该将 Linux 服务器的运行级别 runlevel 设置为 3 ,就是控制台模式,当你需要图形化桌面的时候使用 startx 命令来启动它。
如果你的服务器启动后就直接进入图形界面,你需要修改配置 /etc/inittab 找到 initdefault 一样,将 id:5:initdefault 修改为 id:3:initdefault。
如果你没找到 /etc/inittab 文件,那就创建一个新的,文件内容增加 id:3 这么一行。这样下次服务器启动的时候就不会进入图形界面。如果你不想等到服务器重启的时候才生效,你可以执行 init 3 这个命令。
一旦你的服务器是在控制台模式下运行,你就可以开始我们接下来的内容。
sar 程序是系统监控工具里的瑞士军刀。该程序包含三个工具:sar 用来显示数据,sa1 和 sa2 用来收集数据并保存。sar 可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情。sar 和 nmon 最大的不同就是 sar 跟适合用作长期的监控,而 nmon 可以让你快速的了解系统当前状态。
浏览量:2
下载量:0
时间:
很多人应该都不了解PPTP是什么,它有什么作用!带着这个问题,跟着读文网小编一起往下看!
代码如下:
name pptpd
debug
#logwtmp
logfile /var/log/pptpd.log
lock
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4
浏览量:2
下载量:0
时间:
Hi, 今天读文网小编将会带领大家学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器。
Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现。它可以让我们更加专注于应用的开发,而不是基础架构。
Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置。容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里。
在这个教程里我们将会使用 weave 快速并且简单地将 nginx web 服务器部署为一个负载均衡器,反向代理一个运行在 Amazon Web Services 里面多个节点上的 docker 容器中的简单 php 应用。这里我们将会介绍 WeaveDNS,它提供一个不需要改变代码就可以让容器利用主机名找到的简单方式,并且能够让其他容器通过主机名连接彼此。
而且在这篇教程里,我们还会将使用 nginx 来将负载均衡分配到一个运行 Apache 的容器集合。最简单轻松的方法就是使用 Weave 来把运行在 ubuntu 上的 docker 容器中的 nginx 配置成负载均衡服务器。
在安装完实例之后,我们将会在每台主机上启动 weave 以及 weavedns。Weave 以及 weavedns 使得我们能够轻易地将容器部署到一个全新的基础架构以及配置中, 不需要改变代码,也不需要去理解像 Ambassador 容器以及 Link 机制之类的概念。下面是在第一台主机上启动 weave 以及 weavedns 的命令。
代码如下:
ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1
$ sudo weave launch
$ sudo weave launch-dns 10.2.1.1/24
下一步,我也准备在第二台主机上启动 weave 以及 weavedns。
代码如下:
ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2
$ sudo weave launch $WEAVE_AWS_DEMO_HOST1
$ sudo weave launch-dns 10.2.1.2/24
浏览量:2
下载量:0
时间:
今天就有读者问读文网小编我了,Linux网络编程怎么使用多进程实现服务器并发访问?然后读文网小编我通过查阅相关资料后,就把相关的解决方法分享到这里吧,以下就是具体内容:
采用多进程的方式实现服务器的并发访问的经典范例。
viidiot@ubuntu$ ./discli 127.0.0.1
hello,world!(客户端输入的内容)
hello,world!(服务器端返回的内容)
浏览量:3
下载量:0
时间:
有时候我们需要把搭建出来的网站关闭,那么如何关闭Linux服务器上的网站呢?读文网小编分享了关闭Linux服务器上网站的方法,希望对大家有所帮助。
1、打开WDCP服务器管理系统,输入用户名和密码。
2、进入后点击站点列表,找到要关闭的网站。
3、找到右边的操作,用鼠标左键点击【关】。
4、点击【关】会出现关闭提示,点击确定即可。这样就关闭了自己的网站,这个时候你也会发现关闭的网站的操作项变成了【开】,
5、如果你想开启这个网站,找到右边的操作,用鼠标左键点击【开】。
6、点击【开】会出现开启提示,点击确定即可开启网站。
浏览量:2
下载量:0
时间:
less 与more命令类似,都可以通过翻页键查看上下页的内容,那么Linux的翻页命令more和less怎么使用呢?今天读文网小编与大家分享下Linux的翻页命令more和less使用的具体操作步骤,有需要的朋友不妨了解下。
more
more- 在显示器上阅读文件的过滤器[[ ]]
总览 (SYNOPSIS)
more[-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...][[ ]]
描述 (DESCRIPTION)
More是 一个 过滤器, 用于 分页 显示 (一次一屏) 文本. 这个 版本 非常 基本. 用户 应该 知道 less(1) 提供了 more(1) 的 模拟, 并且 做了 增强.[[ ]]
选项 (OPTION)
下面 介绍 命令行选项. 选项 可以 从 环境变量MORE中获取 (要 确保 它们 以 短横线 开头 (``-)), 但是 命令行选项 能够 覆盖 它们.
-num
这个选项指定屏幕的行数 (以整数表示).
-d
让 more 给 用户 显示 提示信息 "[Press space to continue, 'q' to quit.]", 当 用户 按下 其他键 时, 显示 "[Press 'h' for instructions.]", 而不是 扬声器 鸣笛.
-l
More 在 通常情况下 把 ^L (form feed) 当做 特殊字符, 遇到 这个字符 就会 暂停. -l 选项 可以 阻止 这种特性.
-f
使 more 计数 逻辑行, 而不是 屏幕行 (就是说, 长行 不会 断到 下一行).
-p
不卷屏, 而是 清除 整个屏幕, 然后 显示 文本.
-c
不卷屏, 而是 从 每一屏的 顶部 开始 显示 文本, 每 显示完 一行, 就 清除 这一行的 剩余部分.
-s
把 重复的空行 压缩成 一个 空行.
-u
防止下划线.
+/
在 显示 每个文件 前, 搜索 +/ 选项 指定的 文本串.
+num
从行号 num 开始显示.
[[ ]]
命令 (COMMAND)
more的交互命令基于 vi(1). 有些命令 以 一个 十进制数字 开始, 在 下面的描述 里 称之为 k. 后面的 描述中, ^X 指 control-X.
h or ?
帮助: 显示 这些 命令 的 摘要. 你 如果 忘掉 所有 其他的命令, 请记住这个.
SPACE
显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小.
z
显示 接下来的 k 行文本. 缺省值 是 当前的屏幕大小. 参数 成为 新的缺省值.
RETURN
显示 接下来的 k 行文本. 缺省值 是 1. 参数 成为 新的缺省值.
d or ^D
卷屏 k 行. 缺省值 是 当前的 卷屏大小, 初始化为 11. 参数 成为 新的缺省值.
q 或 Q 或 INTERRUPT
退出.
s
向前跳过 k 行文本. 缺省值 是 1.
f
向前跳过 k 屏文本. 缺省值 是 1.
b or ^B
向后跳回 k 屏文本. 缺省值 是 1.
跳到 上一次 搜索 开始 的 地方.
=
显示当前行号.
/ pattern
搜索 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
n
搜索 最后 第 k 个 符合 正则表达式的 文本串. 缺省值 是 1.
! or :!
在子 shell 中执行 .
v
启动 /usr/bin/vi, 指向 当前行.
^L
刷新屏幕.
:n
跳到 后面 第 k 个 文件. 缺省值 是 1.
:p
跳到 前面 第 k 个 文件. 缺省值 是 1.
:f
显示 当前文件名 和 行号.
.
重复上次命令.
[[ ]]
环境 (ENVIRONMENT)
More利用 下面的 环境变量 (如果 它们 存在):
MORE
这个变量 设置 你 喜欢的 more 选项.
SHELL
当前使用的 shell (一般说来 就是 登录 shell).
TERM
指定 终端类型, more 用它来 获取 操作屏幕 所需的 终端特性
例:
代码如下:
[root@localhost zhangy]# more test.php #查看文件
[root@localhost zhangy]# netstat -tpnl |more #常用方式,分页显示
less
less 与more命令类似,但可以通过翻页键查看上下页的内容
-b<缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o<文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x<数字> 将“tab”键显示为规定的数字空格
命令内部操作
按键功能如下:
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
1) 向前搜索
/ : 使用一个模式进行搜索,并定位到下一个匹配的文本
n : 向前查找下一个匹配的文本
N : 向后查找前一个匹配的文本
2) 向后搜索
? : 使用模式进行搜索,并定位到前一个匹配的文本
n : 向后查找下一个匹配的文本
N : 向前查找前一个匹配的文本
2 全屏导航
ctrl + F :向前移动一屏
ctrl + B :向后移动一屏
ctrl + D :向前移动半屏
ctrl + U :向后移动半屏
3 单行导航
j : 向前移动一行
k : 向后移动一行
4 其它导航
G : 移动到最后一行
g : 移动到第一行
q / ZZ : 退出 less 命令
5 编辑文件
v : 进入编辑模式,使用配置的编辑器编辑当前文件
6 标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。
ma : 使用 a 标记文本的当前位置
'a : 导航到标记 a 处
7 浏览多个文件
方式一,传递多个参数给 less,就能浏览多个文件。
less file1 file2
方式二,正在浏览一个文件时,使用 :e 打开另一个文件。
less file1
:e file2
当打开多个文件时,使用如下命令在多个文件之间切换
:n - 浏览下一个文件
:p - 浏览前一个文件
例:
代码如下:
[root@localhost zhangy]# less test.php #查看文件
[root@localhost zhangy]# netstat -tpnl |less #常用方式,分页显示
看过“Linux的翻页命令more和less怎么使用”
浏览量:4
下载量:0
时间:
semanage命令是用来查询与修改SELinux默认目录的安全上下文,那么大家知道Linux怎么安装使用semanage吗?接下来大家跟着读文网小编一起来了解一Linux安装使用semanage下的解决方法吧。
Selinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,apache默认只能访问/var/www目录,并只能监听80和443端口,因此能有效的防范0-day类的攻击。举例来说,系统上的 Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户),而修复该安全漏洞的 Apache 更新补丁尚未释出。此时 SELinux 可以起到弥补该漏洞的缓和方案。因为 /etc/passwd 不具有 Apache 的访问标签,所以 Apache 对于 /etc/passwd 的访问会被 SELinux 阻止。
CentOS系统自带的chcon工具只能修改文件、目录等的文件类型和策略,无法对端口、消息接口和网络接口等进行管理,semanage能有效胜任SELinux的相关配置工作。
安装:
代码如下:
# yum -y install policycoreutils-python
用法:
semanage命令用来查询与修改SELinux默认目录的安全上下文。
semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec
semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target
主要参数:
-a:添加
-d:删除
-m:修改
-l:列举
-n:不打印说明头
-D:全部删除
-f:文件
-s:用户
-t:类型
r:角色
基本使用:
管理登录linux的用户和SELinux局限的用户之间的映射。
代码如下:
semanage login [-S store] -{a|d|m|l|n|D} [-sr] login_name | %groupname
管理策略模块:
代码如下:
semanage module [-S store] -{a|d|l} [-m [--enable | --disable] ] module_name
管理网络端口类型定义
代码如下:
semanage port [-S store] -{a|d|m|l|n|D} [-tr] [-p proto] port | port_range
例:如apache采用非标准端口,需执行如下命令:
代码如下:
emanage port -a -t http_port_t -p tcp port_number
查看当前允许的httpd端口:
代码如下:
# semanage port -l|grep http
http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 8888, 80, 443, 488, 8008, 8009, 8443
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
注意:8888是我刚才添加的
管理网络接口类型定义
代码如下:
semanage interface [-S store] -{a|d|m|l|n|D} [-tr] interface_spec
管理网络节点类型定义
代码如下:
semanage node [-S store] -{a|d|m|l|n|D} [-tr] [ -p protocol ] [-M netmask] address
管理文件中映射定义
代码如下:
semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec
semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target
例:让 Apache 可以访问位于非默认目录下的网站文件
首先,用 semanage fcontext -l | grep '/var/www' 获知默认 /var/www 目录的 SELinux 上下文:
代码如下:
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
从中可以看到 Apache 只能访问包含 httpd_sys_content_t 标签的文件。
假设希望 Apache 使用 /srv/www 作为网站文件目录,那么就需要给这个目录下的文件增加 httpd_sys_content_t 标签,分两步实现。
首先为 /srv/www 这个目录下的文件添加默认标签类型:semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' 然后用新的标签类型标注已有文件:restorecon -Rv /srv/www 之后 Apache 就可以使用该目录下的文件构建网站了。
其中 restorecon 在 SELinux 管理中很常见,起到恢复文件默认标签的作用。比如当从用户主目录下将某个文件复制到 Apache 网站目录下时,Apache 默认是无法访问,因为用户主目录的下的文件标签是 user_home_t。此时就需要 restorecon 将其恢复为可被 Apache 访问的 httpd_sys_content_t 类型:
代码如下:
restorecon -v /srv/www/foo.com/html/file.html
restorecon reset /srv/www/foo.com/html/file.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" //新建一条规则,指定/web目录及其下的所有文件的扩展属性为httpd_sys_content_t
看过“Linux怎么安装使用semanage”
浏览量:4
下载量:0
时间:
rsh命令用于连接到远程的指定主机并执行指定的命令。那么Linux中rsh怎么远程使用shell命令呢?读文网小编分享了Linux中rsh远程使用shell命令的方法,希望对大家有所帮助。
rsh有两种使用模式:
rsh $host : 远程登录,启动交互式进程。
rsh $host $command :远程执行命令,并显示输出。
rsh hosthostcommand
rsh $host $command的作用是:
1.在远程机器上执行命令$command
2.通过网络连接(socket)重定向当前进程和远端进程的标准输入和标准输出
3.远端rsh进程在远端进程结束后结束
4.本地rsh进程读取远端进程的标准输出直到结束(EOF)
深刻理解这个执行过程有助于理解各种“奇怪”的现象和用法。
代码如下:
+ Suspended (tty input)
$ rsh localhost infinite-loop &
[1] + Suspended (tty input) rsh pv007 infinite-loop
$ rsh -n localhost infinite-loop &
# 执行正常
后台执行rsh命令时,提示了和标准输入相关的错误信息。这是因为rsh默认会把当前窗口的标准输入重定向到远端进程。
而本地rsh进程作为后台程序运行的话,标准输入被“阻塞”了。
通过-n选项制定不需要重定向标准输入(stdin)。
远端进程的执行
执行命令
代码如下:
rsh somehost infinite-loop
在远端机器上查看相关进程:
代码如下:
$ pstree -a -p 3353
in.rshd,3353
└─csh,3363 -c infinite-loop
└─infinite-loop,3632 /u/szhang/bin/infinite-loop
可以看出,远端机器上的rshd进程负责启动远端进程。而且可以看出是通过csh -c的方式启动的(这里用户的默认Shell是C Shell)。
远端进程的标准IO
检查远端进程的文件描述符:
代码如下:
$ ls -l /proc/3363/fd /proc/3632/fd
/proc/3363/fd:
total 0
lrwx------. 1 Jul 30 23:47 16 -> socket:[1184748899]
lrwx------. 1 Jul 30 23:47 17 -> socket:[1184748899]
l-wx------. 1 Jul 30 23:47 18 -> pipe:[1184749092]
lrwx------. 1 Jul 30 23:47 19 -> socket:[1184748899]
代码如下:
/proc/3632/fd:
total 0
lrwx------. 1 Jul 30 23:47 0 -> socket:[1184748899]
lrwx------. 1 Jul 30 23:47 1 -> socket:[1184748899]
l-wx------. 1 Jul 30 23:47 2 -> pipe:[1184749092]
可以看出远端里程的标准输入输出是被重定向到socket上的:
1.stdin 和 stdout 共享一个socket连接
2.stderr 则通过一个pipe重定向(重定向到stdout ???)
3.rsh 的返回值
rsh程序自身的返回值表明的是rsh自身的运行状况,而不是远端进程的返回值。
获得远端进程的返回值
代码如下:
# 远端是C Shell
$ rsh $host "$command ; echo $status"
代码如下:
# 远端是Bash Shell
$ rsh $host "$command ; echo $?"
代码如下:
# 远端Shell类型不确定
$ rsh $host "sh -c '$command ; echo $?'"
启动远端进程所用的Shell
由于用于启动远端进程的Shell类型是未知的,而有些操作的语法在不同Shell里是不同的。
比如输入输出重定向、命令返回值等。
解决该问题的方法之一是通过明确指定的Shell来启动真正需要的里程。比如:
代码如下:
# 不确定远端Shell的类型,显式通过Bash Shell来启动需要的进程
$ rsh -n $host "sh -c '$command > /dev/null 2>&1'"
另一种思路,则是通过一个wrapper程序来启动真正的命令。
通过rsh在远端执行后台进程
想在远端机器上执行后台进程。命令rsh $host "$command &"是不起作用的,会导致本地的rsh进程不能结束。
背后的原因应该是,$command的标准输入输出通常仍然绑定在rsh连接的socket上,从而导致本地的rsh进程无法读取到文件结束符EOF。
知道了原因就知道该怎么办了,关键是关闭后台进程续定在rsh连接上的标准输入输出。
代码如下:
# 如果远端Shell是C Shell
$ rsh -n $host "$command >& /dev/null &"
代码如下:
# 如果远端Shell是Bash Shell
$ rsh -n $host "$command > /dev/null 2>&1 &"
代码如下:
# 不确定远端Shell的类型
$ rsh -n $host "sh -c '$command > /dev/null 2>&1 &'"
但上面这样重定向的办法有个缺点是不能得到任何远端进程的输出,而有时我们希望获得一些输出信息。
这时就需要远端进程能够以守护进程(daemon)的方式运行。
这种情况下,rsh命令可以简单地写作:$ rsh -n $host "$command &"
远端后台进程的内容用Tcl表示,大意如下:
代码如下:
#/bin/env tclsh
puts "I am a background job"
puts "This Can Be Seen by Remote rsh Process"
close stdout
close stderr
# rsh连接到此应该结束。
puts "This Can NOT Be Seen by Remote rsh Process"
更进就步,我们可以甚至忽略rsh命令中的后台运行符:$ rsh -n $host "$command"
这时远端进程需要通过fork的方式结束自己,并启动真正的后台进程(守护进程)。
rsh进程的阻塞和超时处理
在程序中调用rsh $host $command时可能由于各种奇怪的原因发生rsh进程的阻塞,这不是我们希望看到的。
我们希望设置一个超时(timeout)机制来解决这个问题。
在Tcl程序中的一种实现可以这样: TODO
TCP Connection连接数过多引起的rsh失败
监控邮件显示rsh $host $command命令失败,错误提示为“poll: protocol failure in circuit setup"
怀疑是网络连接数过多所引起。
rsh $host $command 的网络连接过程
命令rsh $host连接远程主机的513端口。
命令rsh $host $command则连接远程主机的514端口,并随后发送一个本地端口号给远程主机,要求远程主机建立一个新的TCP连接到这个端口(还不清楚这个新的连接有什么作用)。然后才是传送命令和等待命令结束。
这样做的结果就是在rsh $host $command进程过多时,本地开放的端口资源被消耗完了,从而导致新的rsh $host $command失败。
这是rsh $host的使用则依然正常。
这里提到的rsh的缺陷,也是建议尽量使用ssh的原因之一。
没有完全关闭的网络连接:
在远程主机上kill掉相关的rsh进程后,会导致TCP连接没有完全关闭。
netstat命令显示CLOSE_WAIT状态,端口资源并没有释放出来。
根据配置文件/proc/sys/net/ipv4/tcp_keepalive_time显示,需要等待2个小时,那些端口才会因为超时而被真正关闭,从而释放出来。
代码如下:
%> netstat -a | grep localhost
tcp 0 0 localhost:933 localhost:935 CLOSE_WAIT
%> cat /proc/sys/net/ipv4/tcp_keepalive_time
7200 ;# in seconds. = 2 hours
%> echo "net.ipv4.tcp_keepalive_time = 120" >> /etc/sysctl.con
看过“Linux中rsh怎么远程使用shell命令”
浏览量:3
下载量:0
时间:
很多人都会认为只有服务器系统才能建立FTP,那就大错特错,接下来大家跟着读文网小编一起来了解一下XP系统怎么搭建FTP服务器的解决方法吧。
右键我的电脑,点击管理,打开计算机管理选项卡,如下图:
查看是否有Internet信息服务菜单,如果没有的话,需要进行安装。安装方法如下:
1、打卡windows控制面板,添加/删除程序,添加/删除windows组件,里面就能看到Internet信息服务,打钩,并点击右下侧的“详细信息”,再详细信息选项卡里把FTP服务选中,然后点击下一步安装即可。
2、在安装iis的过程中可能会提示你找不到文件,这时候你需要下载一个iis的安装包,文件路径选择这个安装包即可,注意,可能会提示你选择多次,其实每次选择的文件是不同的。iis的安装包网上可以下载,压缩后大约11M左右,注意需要下载XP版本的。安装完IIS后,在计算机管理里就可以看到了,如图一所示。在默认FTP站点上点击右键,打开属性选项卡,即可以配置你的FTP站点信息。
其实,在XP系统中搭建FTP服务器并没有之前用户说的那么复杂,有需要的用户不妨试试上面介绍的方法来搭建FTP服务器
看过“XP系统怎么搭建FTP服务器”
浏览量:3
下载量:0
时间:
如果你想成为Linux高手,那么掌握一些Linux命令是必不可少的。今天读文网小编与大家分享下学习Linux系统命令的具体使用步骤,有需要的朋友不妨了解下。
一、每日提示
学习Linux命令的一种渐进式方法是:在每次打开终端时,让它显示“每日提示”。这会向你介绍一些有用的命令及其高级使用技巧。
在.bashrc中(/home/.bashrc)增加如下一行:
echo “Did you know that:”; whatis $(ls /bin | shuf -n 1)
你只需要增加这行就够了!如果你想让它更娱乐化一些,你可以安装cowsay。Ubuntu/Debian下安装cowsay:
sudo apt-get install cowsay
Fedora下安装cowsay:
yum install cowsay
除了安装cowsay,还需要在.bashrc中增加:
cowsay -f $(ls /usr/share/cowsay/cows | shuf -n 1 | cut -d. -f1) $(whatis $(ls /bin) 2》/dev/null | shuf -n 1)
然而,上述使用cowsay的方法并不是在所有Linux发行版下均可运行成功。
二、使用“whatis”
如果你不喜欢学习随机的命令,或许你喜欢在使用某种命令的时候学习它的用法。这时你只需要在其前面加上whatis即可。Whatis会逐条的解释你输入的命令。
上图的whatis sudo yum install cheese例子清楚的告诉你:1)sudo是让你具有管理员权限;2)yun是软件包管理器;3)install是让YUM安装软件包;4)cheese是你打算安装的软件。这种方法在复杂的或者不常见的命令前执行的效果并不好。但是如果你想了解某个命令的大概用途,这种方法还是值得一试。
三、浏览命令的所有可用选项
如果你正在使用一个新的命令,那么有两种途径可以查看它的详细用法。一种途径是“man 《程序》”,其中《程序》是你要运行的程序名字。例如,“man cp”会在man文件浏览器中告诉你cp的详细用法。
另一种途径可以更快的查看某个命令的主要用法——“ -help”。例如,“cp -help”会在终端中直接打印出cp命令的大量用法。换句话讲,-help选项在所有的Linux命令中具有相同的含义。
四、速成班——是的,现在!
最后,你可以在这里学习Linux命令的语法!了解Linux命令的基本语法对于理解命令很有益处,很值得一学。
所有的Linux命令都具有相同的结构:[sudo] program [parameter] [parameter] … [parameter] [-flag] [parameter] [-flag] [parameter] … [flag] [parameter]
让我来分段剖析上述的结构:
1.如果一个命令需要管理员权限(root访问权限)才能运行,那么必须在它之前加上“sudo”。这使得在运行命令之输入管理员的密码。
2.“program”是应用程序的名字。它包括yum, apt-get, cheese, tar, cp, mv和firefox等等。如果没有经过额外的配置,所有可以通过这种方法访问的命令均放在/usr/bin目录下(译者注:默认情况下其它一些目录下的程序也可以这样运行,如/bin下的命令)。对于很多程序,你只需要在终端中输入其名字。例如,在终端中输入”firefox”,然后按Enter键,Firefox就运行起来了。
3.在程序名字的后面,你可以使用不同的参数和标志。不同程序在这方面差别很大。例如,命令“cp file1 file2”在file1的所在目录下将其复制一份并另存为file2。这里的“file1”和“file2”是命令“cp”的两个参数。一些命令也通过使用不同的标志来改变其行为。例如,命令“sudo yum install cheese -y”中的“install”是yum的参数,“cheese”是install的参数,“-y”是yum的标志——当yum询问你是否继续的时候,一律默认回答“yes”。需要注意的是,一些标志有自己的参数,而另一些则没有。这里就不给出具体的例子了。每个Linux名字都有自己的一套标志设定,掌握这些需要长时间的积累。
学习Linux系统命令的几种技巧就介绍完了,当然Linux系统的命令还有很多,掌握这些技巧可以节省学习Linux命令的时间。除此之外的实践和反复地训练也是必不可少的。
浏览量:2
下载量:0
时间: